home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 6
/
FM Towns Free Software Collection 6.iso
/
t_os
/
log_cut
/
log_cut.bas
< prev
next >
Wrap
BASIC Source File
|
1993-07-08
|
5KB
|
143 lines
1000 '
1010 ' ログファイル分割保存プログラム ver. 1.02
1020 '
1030 ' CcsCpyで処理されたログファイルを、ボード毎に分割して
1040 ' 保存する。
1050 '
1060 ' 分割するボード名については、別ファイルに記録されている。
1070 '
1080 ' 分割後のログファイルでも、CcsCpyで閲覧できるように、
1090 ' キーコード"*****"も同時に保存する。
1100 '
1110 *RESTART
1120 DIM BUFFER$(11) '先読みバッファ
1130 CLS:ON ERROR GOTO *ERROR_CORRECT
1140 LOCATE 20,2:PRINT "汎用(?)ログ・カッター Version 1.02"
1150 LOCATE 20,3:PRINT " 1993 2/23 by SCC-PON"
1160 '
1170 'ボード・リストの読み込み
1180 '
1190 ER_FLAG=2:LOCATE 0,5
1200 LINE INPUT "ボード・リストのファイル名は ? ",A$
1210 OPEN "I",#1,A$ 'ボード・リストをオープン
1220 INPUT #1,BRD_NO
1230 DIM BRD_NAME$(BRD_NO),BRD_FILE$(BRD_NO)
1240 FOR I=1 TO BRD_NO
1250 INPUT #1,BRD_NAME$(I),BRD_FILE$(I)
1260 NEXT
1270 CLOSE #1:ER_FLAG=0
1280 '
1290 '
1300 'ログファイルのオープン
1310 '
1320 *SET_LOG_FILE
1330 LOCATE 0,6
1340 LINE INPUT "ログ・ファイルのファイル名は ? ",LD_FILE$
1350 OPEN "I",#1,LD_FILE$
1360 '
1370 '
1380 GOSUB *GET_LINE 'CcsCpy未処理のログか判定
1390 IF KINSTR(A_LINE$,"*****")=0 THEN ERROR 251
1400 F_ARTICLE=1
1410 *LOOP0
1420 '
1430 'アーティクルの確定
1440 '
1450 WHILE FLAG=0 AND NEW_BRD=0
1460 GOSUB *GET_LINE:BUFFER$(0)=A_LINE$
1470 I=0
1480 WHILE F_ARTICLE<2 AND I<10 AND EOF(1)=0 AND FLAG=0
1490 IF KINSTR(BUFFER$(I),"*****")>0 THEN F_ARTICLE=F_ARTICLE+1
1500 K=1
1510 *FOR_NEXT_1
1520 IF KINSTR(BUFFER$(I),BRD_NAME$(K))<>0 THEN
1530 SV_FILE$=BRD_FILE$(K):FLAG=1:GOTO *TRAP1
1540 ENDIF
1550 K=K+1:IF K<=BRD_NO THEN *FOR_NEXT_1
1560 I=I+1
1570 GOSUB *GET_LINE:BUFFER$(I)=A_LINE$
1580 *TRAP1
1590 WEND
1600 IF KLEN(SV_FILE$)>0 THEN
1610 IF NOW_DISPLAY=1 THEN
1620 LOCATE 0,12:PRINT STRING$(78," "):NOW_DISPLAY=0
1630 ENDIF
1640 ELSE
1650 BEEP 1
1660 LOCATE 0,12
1670 PRINT "新規ボードがあります。登録を変更してください。"
1680 NEW_BRD=1:NOW_DISPLAY=1:BEEP 0
1690 ENDIF
1700 WEND
1710 FLAG=0
1720 IF NEW_BRD=1 THEN *NEW_BRD
1730 '
1740 ' アーティクル書き込み
1750 '
1760 IF LAST_SV$<>SV_FILE$ THEN
1770 LOCATE 0,10:PRINT STRING$(78," ")
1780 LOCATE 0,10:PRINT "現在処理中のボード : ";SV_FILE$
1790 ENDIF
1800 OPEN "A",#2,SV_FILE$
1810 FOR J=0 TO I
1820 PRINT #2,BUFFER$(J)
1830 NEXT
1840 GOSUB *GET_LINE:BUFFER$(0)=A_LINE$
1850 WHILE F_ARTICLE<2 AND EOF(1)=0
1860 PRINT #2,BUFFER$(0)
1870 GOSUB *GET_LINE:BUFFER$(0)=A_LINE$
1880 IF BUFFER$(0)="*****" THEN PRINT #2,BUFFER$(0):F_ARTICLE=F_ARTICLE+1
1890 WEND
1900 *NEW_BRD
1910 F_ARTICLE=1:NEW_BRD=0:LAST_SV$=SV_FILE$:SV_FILE$=""
1920 CLOSE #2
1930 '
1940 '
1950 GOTO *LOOP0
1960 '
1970 END
1980 '
1990 '
2000 '
2010 *ERROR_CORRECT
2020 CLOSE #1:CLOSE #2:F_ARTICLE=0:FLAG=0:SV_FILE$=""
2030 IF ERR=251 THEN
2040 COLOR 2:BEEP:LOCATE 0,14
2050 PRINT " CcsCpyで、未処理のログファイルです。"
2060 COLOR 7:ER_FLAG=1
2070 ENDIF
2080 IF (ERR=54 AND ER_FLAG<>2) OR ER_FLAG=1 THEN
2090 ER_FLAG=0
2100 LOCATE 0,15:PRINT "正常終了(のはず(^^;)"
2110 PRINT "同じネットのログを処理しますか?([Y]/N)";
2120 YN$=INPUT$(1):PRINT YN$
2130 IF YN$="Y" OR YN$="y" OR YN$=CHR$(13) THEN
2140 LOCATE 0, 6:PRINT STRING$(78," ")
2150 LOCATE 0,10:PRINT STRING$(78," ")
2160 LOCATE 0,12:PRINT STRING$(78," ")
2170 LOCATE 0,14:PRINT STRING$(78," ")
2180 LOCATE 0,15:PRINT STRING$(78," ")
2190 LOCATE 0,16:PRINT STRING$(78," ")
2200 RESUME *SET_LOG_FILE
2210 ENDIF
2220 PRINT "別のネットのログを処理しますか?([Y]/N)";
2230 YN$=INPUT$(1):PRINT YN$
2240 IF YN$="Y" OR YN$="y" OR YN$=CHR$(13) THEN
2250 ERASE BRD_NAME$,BRD_FILE$,BUFFER$:RESUME *RESTART
2260 ENDIF
2270 ELSE IF ERR=54 AND ER_FLAG=2 THEN
2275 PRINT "ボード・リストの記述に不足があります。"
2277 ELSE
2280 PRINT "エラー発生 エラーコード:";ERR,"発生行:";ERL
2290 ENDIF
2300 WAIT 150:END
2310 *GET_LINE
2320 A_LINE$="":A_CHR$=""
2330 A_CHR$=INPUT$(1,#1)
2340 WHILE A_CHR$<>CHR$(&H0D)
2350 A_LINE$=A_LINE$+A_CHR$
2360 A_CHR$=INPUT$(1,#1)
2370 WEND
2380 A_CHR$=INPUT$(1,#1)
2390 RETURN